﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Biblioteca.classesBasicas.pessoa;
using Biblioteca.classesBasicas.equipamento;
using Biblioteca.classesBasicas.jogo;
using Biblioteca.negocio.pessoa;
using Biblioteca.negocio.equipamento;
using Biblioteca.negocio.jogo;

namespace Biblioteca.fachada
{
    public class Fachada : IFachada
    {

        private ControladorCliente controladorCliente;
        private ControladorFuncionario controladorFuncionario;
        private ControladorArma controladorArma;
        private ControladorCapacete controladorCapacete;
        private ControladorColete controladorColete;
        private ControladorCilindro controladorCilindro;
        private ControladorCampo controladorCampo;
        private ControladorPartida controladorPartida;
        private ControladorReserva controladorReserva;


        public Fachada() 
        {
            this.controladorCliente = new ControladorCliente();
            this.controladorFuncionario = new ControladorFuncionario();
            this.controladorArma = new ControladorArma();
            this.controladorCapacete = new ControladorCapacete();
            this.controladorColete = new ControladorColete();
            this.controladorCilindro = new ControladorCilindro();
            this.controladorCampo = new ControladorCampo();
            this.controladorPartida = new ControladorPartida();
            this.controladorReserva = new ControladorReserva();
        }


        //CRUD Cliente
        public void cadastrarCliente(Cliente cliente)
        {
            this.controladorCliente.cadastrar(cliente);
            //throw new NotImplementedException();
        }

        public void alterarCliente(Cliente cliente)
        {
            this.controladorCliente.alterar(cliente);
            //throw new NotImplementedException();
        }

        public void removerCliente(Cliente cliente)
        {
            this.controladorCliente.remover(cliente);
            //throw new NotImplementedException();
        }

        public Cliente consultarPorIdCliente(string id)
        {
            return this.controladorCliente.consultarPorId(id);
            //throw new NotImplementedException();
        }

        public List<Cliente> listarCliente()
        {
            return this.controladorCliente.listar();
            //throw new NotImplementedException();
        }

        
        //CRUD Funcionario
        public void cadastrarFuncionario(Funcionario funcionario)
        {
            this.controladorFuncionario.cadastrar(funcionario);
            //throw new NotImplementedException();
        }

        public void alterarFuncionario(Funcionario funcionario)
        {
            this.controladorFuncionario.alterar(funcionario);            
            //throw new NotImplementedException();
        }

        public void removerFuncionario(Funcionario funcionario)
        {
            this.controladorFuncionario.remover(funcionario);
            //throw new NotImplementedException();
        }

        public Funcionario consultarPorIdFuncionario(string id)
        {
            return this.controladorFuncionario.consultarPorId(id);
            //throw new NotImplementedException();
        }

        public List<Funcionario> listarFuncionario()
        {
            return this.controladorFuncionario.listar();
            //throw new NotImplementedException();
        }


        //CRUD Arma
        public void cadastrarArma(Arma arma)
        {
            this.controladorArma.cadastrar(arma);
            // throw new NotImplementedException();
        }

        public void alterarArma(Arma arma)
        {
            this.controladorArma.alterar(arma);
            //throw new NotImplementedException();
        }

        public void removerArma(Arma arma)
        {
            this.controladorArma.remover(arma);
            //throw new NotImplementedException();
        }

        public Arma consultarPorIdArma(string id)
        {

            return this.controladorArma.consultarPorId(id);
            //throw new NotImplementedException();
        }

        public List<Arma> listarArma()
        {
            return this.controladorArma.listar();
            //throw new NotImplementedException();
        }


        //CRUD Capacete
        public void cadastrarCapacete(Capacete capacete)
        {
            this.controladorCapacete.cadastrar(capacete);
            // throw new NotImplementedException();
        }

        public void alterarCapacete(Capacete capacete)
        {
            this.controladorCapacete.alterar(capacete);
            //throw new NotImplementedException();
        }

        public void removerCapacete(Capacete capacete)
        {
            this.controladorCapacete.remover(capacete);
            //throw new NotImplementedException();
        }

        public Capacete consultarPorIdCapacete(string id)
        {
            return this.consultarPorIdCapacete(id);
            //throw new NotImplementedException();
        }

        public List<Capacete> listarCapacete()
        {
            return this.controladorCapacete.listar();
            //throw new NotImplementedException();
        }


        //CRUD Cilindro
        public void cadastrarCilindro(Cilindro cilindro)
        {
            this.controladorCilindro.cadastrar(cilindro);
            //throw new NotImplementedException();
        }

        public void alterarCilindro(Cilindro cilindro)
        {
            this.controladorCilindro.alterar(cilindro);
            // throw new NotImplementedException();
        }

        public void removerCilindro(Cilindro cilindro)
        {
            this.controladorCilindro.remover(cilindro);
            //throw new NotImplementedException();
        }

        public Cilindro consultarPorIdCilindro(string id)
        {
            return this.controladorCilindro.consultarPorId(id);
            //throw new NotImplementedException();
        }

        public List<Cilindro> listarCilindro()
        {
            return this.controladorCilindro.listar();
            //throw new NotImplementedException();
        }


        //CRUD Colete
        public void cadastrarColete(Colete colete)
        {
            this.controladorColete.cadastrar(colete);
            //throw new NotImplementedException();
        }

        public void alterarColete(Colete colete)
        {
            this.controladorColete.alterar(colete);
            //throw new NotImplementedException();
        }

        public void removerColete(Colete colete)
        {
            this.controladorColete.remover(colete);
            //throw new NotImplementedException();
        }

        public Colete consultarPorIdColete(string id)
        {
            return this.controladorColete.consultarPorId(id);
            //throw new NotImplementedException();
        }

        public List<Colete> listarColete()
        {
            return controladorColete.listar();
            //throw new NotImplementedException();
        }


        //CRUD Campo
        public void cadastrarCampo(Campo campo)
        {
            this.controladorCampo.cadastrar(campo);
            //throw new NotImplementedException();
        }

        public void alterarCampo(Campo campo)
        {
            this.controladorCampo.alterar(campo);
            //throw new NotImplementedException();
        }

        public void removerCampo(Campo campo)
        {
            this.controladorCampo.remover(campo);
            //throw new NotImplementedException();
        }

        public Campo consultarPorIdCampo(string id)
        {
            return this.controladorCampo.consultarPorId(id);
            //throw new NotImplementedException();
        }

        public List<Campo> listarCampo()
        {
            return this.controladorCampo.listar();
            //throw new NotImplementedException();
        }


        //CRUD Partida
        public void cadastrarPartida(Partida partida)
        {
            this.controladorPartida.cadastrar(partida);
            //throw new NotImplementedException();
        }

        public void alterarPartida(Partida partida)
        {
            this.controladorPartida.alterar(partida);
            //throw new NotImplementedException();
        }

        public void removerPartida(Partida partida)
        {
            this.controladorPartida.remover(partida);
            //throw new NotImplementedException();
        }

        public Partida consultarPorIdPartida(string id)
        {
            return this.controladorPartida.consultarPorId(id);
            //throw new NotImplementedException();
        }

        public List<Partida> listarPartida()
        {
            return this.controladorPartida.listar();
            //throw new NotImplementedException();
        }


        //CRUD Reserva
        public void cadastrarReserva(Reserva reserva)
        {
            this.controladorReserva.cadastrar(reserva);
            //  throw new NotImplementedException();
        }

        public void alterarReserva(Reserva reserva)
        {
            this.controladorReserva.alterar(reserva);
            //throw new NotImplementedException();
        }

        public void removerReserva(Reserva reserva)
        {
            this.controladorReserva.remover(reserva);
            // throw new NotImplementedException();
        }

        public Reserva consultarPorIdReserva(string id)
        {
            return this.controladorReserva.consultarPorId(id);
            // throw new NotImplementedException();
        }

        public List<Reserva> listarReserva()
        {
            return this.controladorReserva.listar();
            //throw new NotImplementedException();
        }
    }
}
